﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Frp客户端.Dto
{
    public class FrpsConfig
    {
        /// <summary>
        /// 绑定的端口号
        /// </summary>
        public int bindPort { get; set; }

        /// <summary>
        /// 虚拟主机的HTTP端口号
        /// </summary>
        public int vhostHTTPPort { get; set; }

        /// <summary>
        /// 虚拟主机的HTTPS端口号
        /// </summary>
        public int vhostHTTPSPort { get; set; }

        /// <summary>
        /// 是否启用Prometheus，true表示启用，false表示禁用
        /// </summary>
        public bool enablePrometheus { get; set; }

        /// <summary>
        /// 子域名主机地址
        /// </summary>
        //public string subdomainHost { get; set; }

        /// <summary>
        /// 认证相关的配置信息
        /// </summary>
        public Auth auth { get; set; }

        /// <summary>
        /// 日志相关的配置信息
        /// </summary>
        public Log log { get; set; }

        /// <summary>
        /// Web服务器相关的配置信息
        /// </summary>
        public WebServer webServer { get; set; }
    }

    // 认证相关配置的实体类
    public class Auth
    {
        /// <summary>
        /// 认证方法，这里示例值为"token"
        /// </summary>
        public string method { get; set; }

        /// <summary>
        /// 认证使用的token值
        /// </summary>
        public string token { get; set; }
    }

    // 日志相关配置的实体类
    public class Log
    {
        /// <summary>
        /// 日志输出的目标，示例值为"console"表示输出到控制台
        /// </summary>
        public string to { get; set; }

        /// <summary>
        /// 日志级别，示例值为"info"
        /// </summary>
        public string level { get; set; }

        /// <summary>
        /// 日志保留的最大天数，示例值为3天
        /// </summary>
        public int maxDays { get; set; }

        /// <summary>
        /// 是否禁用打印颜色，false表示不禁用，即启用打印颜色
        /// </summary>
        public bool disablePrintColor { get; set; }
    }

    // Web服务器相关配置的实体类
    public class WebServer
    {
        /// <summary>
        /// Web服务器监听的地址，示例值为"0.0.0.0"表示监听所有可用地址
        /// </summary>
        public string addr { get; set; }

        /// <summary>
        /// Web服务器监听的端口号
        /// </summary>
        public int port { get; set; }

        /// <summary>
        /// Web服务器登录的用户名
        /// </summary>
        public string user { get; set; }

        /// <summary>
        /// Web服务器登录的密码
        /// </summary>
        public string password { get; set; }
    }
}
